﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CLIGenConsole
{
    class Parameter<T>
    {
        string name;
        string Name
        {
            get { return name; }
            set { name = value; }
        }

        T[] values;
        T[] Values
        {
            get { return values; }
        }
    }

    class Command
    {
        string name;
        string Name
        {
            get { return name; }
            set { name = value; }
        }

        string def;
        string Definition
        {
            get { return def; }
            set { def = value; }
        }

        List<Parameter<object>> Parameters;

        public bool AddParameter<T>(Parameter<T> param)
        {
            return true;
        }

        public bool AddParameter<T>(string name, T[] values = null)
        {
            return true;
        }
    }

    class CLI
    {
        string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        string delim;
        public string Delimiter
        {
            get { return delim; }
            set { delim = value; }
        }

        List<Command> Commands;



        public CLI()
        {
            this.name = "mycli";
            this.Commands = new List<Command>();
        }

        public CLI(string Name)
        {
            this.name = Name;
        }

        public void Save(string Filename)
        {
            
        }

        public string Print()
        {


            return "";
        }

        public bool Print(string Filename)
        {


            return true;
        }

        public bool Compile()
        {


            return true;
        }

        public bool Compile(string p)
        {


            return true;
        }

        public void AddCommand(string command, string execute)
        {
            
        }
    }
}
